﻿using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using com.clinica.business.BE.actplansalud;
using com.clinica.business.BE.comun;
using com.clinica.business.BL.interfaces.actplansalud;
using com.clinica.config;

namespace LiclActPlanSalud
{
    public class LiclPlanSaludController
    {
        BeginConfig config = new BeginConfig();
        public LiclPlanSaludController()
        { 
        
        }
        public List<PlanSaludBE> Obtener_PlanSalud(PlanSaludBE oRequest, DateTime dtFecha_Inicio, DateTime dtFecha_Fin)
        {
            ChannelFactory<IPlanSaludBL> factory = null;
            using (factory = new ChannelFactory<IPlanSaludBL>(config.Context + "PlanSalud"))
            {
                IPlanSaludBL oParm = factory.CreateChannel();
                List<PlanSaludBE> lst = oParm.ObtenerListaPlanSalud(oRequest, dtFecha_Inicio, dtFecha_Fin);
                factory.Close();
                return lst;
            }
        }
        public List<PlanSaludBE> Obtener_Estado_PlanSalud(PlanSaludBE oRequest, DateTime dtFecha_Inicio, DateTime dtFecha_Fin)
        {
            ChannelFactory<IPlanSaludBL> factory = null;
            using (factory = new ChannelFactory<IPlanSaludBL>(config.Context + "PlanSalud"))
            {
                IPlanSaludBL oParm = factory.CreateChannel();
                List<PlanSaludBE> lst = oParm.ObtenerListaXEstadoPlanSalud(oRequest, dtFecha_Inicio, dtFecha_Fin);
                factory.Close();
                return lst;
            }
        }
        public List<PlanSaludBE> Obtener_Pendiente_PlanSalud(PlanSaludBE oRequest, DateTime dtFecha_Inicio, DateTime dtFecha_Fin)
        {
            ChannelFactory<IPlanSaludBL> factory = null;
            using (factory = new ChannelFactory<IPlanSaludBL>(config.Context + "PlanSalud"))
            {
                IPlanSaludBL oParm = factory.CreateChannel();
                List<PlanSaludBE> lst = oParm.ObtenerListaPendientePlanSalud(oRequest, dtFecha_Inicio, dtFecha_Fin);
                factory.Close();
                return lst;
            }
        }
        public List<ParametrosBE> Obtener_Tabla(ParametrosBE oRequest)
        {
            ChannelFactory<IPlanSaludBL> factory = null;
            using (factory = new ChannelFactory<IPlanSaludBL>(config.Context + "PlanSalud"))
            {
                IPlanSaludBL oParm = factory.CreateChannel();
                List<ParametrosBE> lst = oParm.ObternerTipoDocumento(oRequest);
                factory.Close();
                return lst;
            }
        }

        public List<EmpresaBE> Obtener_Empresa(EmpresaBE oRequest)
        {
            ChannelFactory<IPlanSaludBL> factory = null;
            using (factory = new ChannelFactory<IPlanSaludBL>(config.Context + "PlanSalud"))
            {
                IPlanSaludBL oEmp = factory.CreateChannel();
                List<EmpresaBE> lst = oEmp.ObternerEmpresa(oRequest);
                factory.Close();
                return lst;
            }
        }
        public List<CiaSeguroBE> Obtener_CiaAseguradora(CiaSeguroBE oRequest)
        {
            ChannelFactory<IPlanSaludBL> factory = null;
            using (factory = new ChannelFactory<IPlanSaludBL>(config.Context + "PlanSalud"))
            {
                IPlanSaludBL oCia = factory.CreateChannel();
                List<CiaSeguroBE> lst = oCia.ObternerCiaSeguros(oRequest);
                factory.Close();
                return lst;
            }
        }
        public List<PlanSaludBE> Obtener_PlanSaludOrigen(PlanSaludBE oRequest)
        {
            ChannelFactory<IPlanSaludBL> factory = null;
            using (factory = new ChannelFactory<IPlanSaludBL>(config.Context + "PlanSalud"))
            {
                IPlanSaludBL opla = factory.CreateChannel();
                List<PlanSaludBE> lst = opla.ObternerPlanSaludOrigen(oRequest);
                factory.Close();
                return lst;
            }
        }
        public List<PlanSaludBE> Obtener_Solicitud_PlanSalud(PlanSaludBE oRequest)
        {
            ChannelFactory<IPlanSaludBL> factory = null;
            using (factory = new ChannelFactory<IPlanSaludBL>(config.Context + "PlanSalud"))
            {
                IPlanSaludBL oTarif = factory.CreateChannel();
                List<PlanSaludBE> lst = oTarif.ObtenerSolicitudPlanSalud(oRequest);
                factory.Close();
                return lst;
            }
        }
        public int Grabar_PlanSalud(int accion, List<PlanSaludBE> oRequest)
        {
            ChannelFactory<IPlanSaludBL> factory = null;
            using (factory = new ChannelFactory<IPlanSaludBL>(config.Context + "PlanSalud"))
            {
                IPlanSaludBL oTarif = factory.CreateChannel();
                int result = oTarif.GuardarPlanSalud(accion, oRequest);
                factory.Close();
                return result;
            }
        }
        public int Aprobar_PlanSalud(PlanSaludBE oRequest)
        {
            ChannelFactory<IPlanSaludBL> factory = null;
            using (factory = new ChannelFactory<IPlanSaludBL>(config.Context + "PlanSalud"))
            {
                IPlanSaludBL oTarif = factory.CreateChannel();
                int result = oTarif.AprobarPlanSalud(oRequest);
                factory.Close();
                return result;
            }
        }

        public int Anular_PlanSalud(PlanSaludBE oRequest)
        {
            ChannelFactory<IPlanSaludBL> factory = null;
            using (factory = new ChannelFactory<IPlanSaludBL>(config.Context + "PlanSalud"))
            {
                IPlanSaludBL oTarif = factory.CreateChannel();
                int result = oTarif.AnularPlanSalud(oRequest);
                factory.Close();
                return result;
            }
        }

        public int Generar_PlanSalud(PlanSaludBE oRequest, int accion)
        {
            ChannelFactory<IPlanSaludBL> factory = null;
            using (factory = new ChannelFactory<IPlanSaludBL>(config.Context + "PlanSalud"))
            {
                IPlanSaludBL oTarif = factory.CreateChannel();
                int result = oTarif.GenerarPlanSalud(oRequest,accion);
                factory.Close();
                return result;
            }
        }



        public int Rechazar_PlanSalud(PlanSaludBE oRequest)
        {
            ChannelFactory<IPlanSaludBL> factory = null;
            using (factory = new ChannelFactory<IPlanSaludBL>(config.Context + "PlanSalud"))
            {
                IPlanSaludBL oTarif = factory.CreateChannel();
                oTarif.RechazarPlanSalud(oRequest);
                factory.Close();
                return 0;
            }
        }

        public List<PlanSaludBE> Cargar_PlanSalud_Consulta(PlanSaludBE oRequest)
        {
            ChannelFactory<IPlanSaludBL> factory = null;
            using (factory = new ChannelFactory<IPlanSaludBL>(config.Context + "PlanSalud"))
            {
                IPlanSaludBL oTarif = factory.CreateChannel();
                List<PlanSaludBE> lst = oTarif.CargarPlanSaludConsulta(oRequest);
                factory.Close();
                return lst;
            }
        }
        public List<PlanSaludBE> Obtener_PlanSalud_Consulta(PlanSaludBE oRequest, DateTime dtFecha_Inicio, DateTime dtFecha_Fin)
        {
            ChannelFactory<IPlanSaludBL> factory = null;
            using (factory = new ChannelFactory<IPlanSaludBL>(config.Context + "PlanSalud"))
            {
                IPlanSaludBL oParm = factory.CreateChannel();
                List<PlanSaludBE> lst = oParm.ObtenerPlanSaludConsulta(oRequest, dtFecha_Inicio, dtFecha_Fin);
                factory.Close();
                return lst;
            }
        }


    }
}
